#ifndef AVALON_DELIMITEDREADERTESTER_HPP
#define AVALON_DELIMITEDREADERTESTER_HPP
#include <cppunit/extensions/HelperMacros.h>
#include "Avalon/IO/IO.hpp"
#include "Avalon/IOTests/IOTests.hpp"

namespace Avalon {
namespace IO {
namespace Tests {

  /** \class DelimitedReaderTester
   *  \brief Tests the DelimitedReader class.
   */
  class DelimitedReaderTester : public CPPUNIT_NS::TestFixture {
    public:

      //! Tests reading from an empty source.
      void TestEmpty();

      //! Tests reading non-delimited data.
      void TestWithoutDelimiter();

      //! Tests single delimited data.
      void TestSingleDelimiter();

      //! Tests two delimited data.
      void TestTwoDelimiters();

      //! Tests with and without delimiter.
      void TestWithAndWithoutDelimiters();

      //! Tests many delimiters.
      void TestManyDelimiters();

      //! Tests reading some delimited data.
      void TestReadSome();

    private:
      CPPUNIT_TEST_SUITE(DelimitedReaderTester);
        CPPUNIT_TEST(TestEmpty);
        CPPUNIT_TEST(TestWithoutDelimiter);
        CPPUNIT_TEST(TestSingleDelimiter);
        CPPUNIT_TEST(TestTwoDelimiters);
        CPPUNIT_TEST(TestWithAndWithoutDelimiters);
        CPPUNIT_TEST(TestManyDelimiters);
        CPPUNIT_TEST(TestReadSome);
      CPPUNIT_TEST_SUITE_END();
  };
}
}
}

#endif // AVALON_DELIMITEDREADERTESTER_HPP
